<%@page import="com.alibaba.fastjson.JSON"%>
<%@page import="com.alibaba.fastjson.JSONObject"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@page import="com.alipay.config.AlipayConfig" %>
<%@page import="com.alipay.api.AlipayClient"%>
<%@page import="com.alipay.api.DefaultAlipayClient"%>
<%@page import="com.alipay.api.AlipayApiException"%>
<%@page import="com.alipay.api.response.AlipayTradeWapPayResponse"%>
<%@page import="com.alipay.api.request.AlipayTradeWapPayRequest"%>
<%@page import="com.alipay.api.domain.AlipayTradeWapPayModel" %>
<%@page import="com.alipay.api.domain.AlipayTradeCreateModel"%>
<%@page import="listener.PayLinstener,java.util.Map"%>
<%
/* *
 * 功能：支付宝手机网站支付接口(alipay.trade.wap.pay)接口调试入口页面
 * 版本：2.0
 * 修改日期：2016-11-01
 * 说明：
 * 以下代码只是为了方便商户测试而提供的样例代码，商户可以根据自己网站的需要，按照技术文档编写,并非一定要使用该代码。
 请确保项目文件有可写权限，不然打印不了日志。
 */
%>
<%
if(request.getParameter("WIDout_trade_no")!=null){
	String code = request.getParameter("code");
	JSONObject maps = PayLinstener.map;
	JSONObject map = maps.getJSONObject(code);
	if(map==null){
		return;
	}
	JSONObject ali = map.getJSONObject("ali");
	String url = ali.getString("return_url");
	if(request.getParameter("url")!=null&&!request.getParameter("url").isEmpty()){
		url=request.getParameter("url");
	}
	// 商户订单号，商户网站订单系统中唯一订单号，必填
    //String out_trade_no = new String(request.getParameter("WIDout_trade_no").getBytes("ISO-8859-1"),"UTF-8");
    String out_trade_no = request.getParameter("WIDout_trade_no");
	// 订单名称，必填
    //String subject = new String(request.getParameter("WIDsubject").getBytes("ISO-8859-1"),"UTF-8");
	String subject = "订单编号"+out_trade_no;
	System.out.println(subject);
    // 付款金额，必填
    //String total_amount=new String(request.getParameter("WIDtotal_amount").getBytes("ISO-8859-1"),"UTF-8");
    String total_amount = request.getParameter("WIDtotal_amount");
    // 商品描述，可空
    //String body = new String(request.getParameter("WIDbody").getBytes("ISO-8859-1"),"UTF-8");
    String body = "";
    // 超时时间 可空
   	String timeout_express="2m";
    // 销售产品码 必填
    String product_code="QUICK_WAP_WAY";
    /**********************/
    // SDK 公共请求类，包含公共请求参数，以及封装了签名与验签，开发者无需关注签名与验签     
    //调用RSA签名方式
    AlipayClient client = new DefaultAlipayClient(
    		ali.getString("URL"), ali.getString("APPID"), 
    		ali.getString("RSA_PRIVATE_KEY"), ali.getString("FORMAT"),
    		ali.getString("CHARSET"), ali.getString("ALIPAY_PUBLIC_KEY") ,
    		ali.getString("SIGNTYPE"));
    
    AlipayTradeWapPayRequest alipay_request=new AlipayTradeWapPayRequest();
    
    // 封装请求支付信息
    AlipayTradeWapPayModel model=new AlipayTradeWapPayModel();
    model.setOutTradeNo(out_trade_no);
    model.setSubject(subject);
    model.setTotalAmount(total_amount);
    model.setBody(body);
    model.setTimeoutExpress(timeout_express);
    model.setProductCode(product_code);
    alipay_request.setBizModel(model);
    // 设置异步通知地址
    alipay_request.setNotifyUrl(ali.getString("notify_url"));
    // 设置同步地址
    alipay_request.setReturnUrl(url);   
    
    // form表单生产
    String form = "";
	try {
		// 调用SDK生成表单
		form = client.pageExecute(alipay_request).getBody();
		response.setContentType("text/html;charset=" + ali.getString("CHARSET")); 
	    response.getWriter().write(form);//直接将完整的表单html输出到页面 
	    response.getWriter().flush(); 
	    response.getWriter().close();
	} catch (AlipayApiException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} 
}
%>